3.0.1 ES5 实现 const
const 有什么特征,常量: 只读的常量。一旦声明,常量的值就不能改变。
就是要设置一个变量的描述对象属性 writable: false, configurable: false
- 1.获取一个对象属性的 描述对象
let b = {a:1}
Object.getOwnPropertyDescriptor(b, 'a');
// {value: 1, writable: true, enumerable: true, configurable: true}
1
2
3
4
5
2
3
4
5
- 2.可以通过 Object.defineProperty 来实现
Object.defineProperty(CONST, "A", {
value: 1,
writable: false, //设置属性只读
configurable: false, //设置属性不可配置
enumerable: true
});
也看到 有的说使用 设置 setter 和 getter 函数
function setConst(name, value) {
Object.defineProperty(window, name, {
set(x) {
throw new Error(`Assignment to constant variable ${name}`);
},
get() {
return value;
}
})
}
setConst('name','jack');
name = 'rose';
//Uncaught Error: Assignment to constant variable name
参考:https://segmentfault.com/q/1010000008615502
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28